    Help for Alarm

Properties            Events            Methods

Registration Information

Order Form

Getting Custom Controls Written

Licensing Information

Description

Alarm VBX/OCX  is a Visual Basic custom control that lets you set multiple alarms to go off at various times during the day.  This control makes it easy to schedule events --- just set the properties and wait for it to notify you.

With Alarm, you can set dozens of alarms, cancel/delete an alarm and create a new one, edit an old one, set many alarms for a given date in the future, and cancel alarms at will.

Alarm even tells you when the date has changed.  You can use this to remove all of the current alarms and set new ones for the day.  A must if you're writing a Personal Information Manager.

Alarm is invisible to the user.

File Name

ALARM1.VBX, ALARM16.OCX, ALARM32.OCX

ActiveX / OCX Object Name

Mabry.AlarmCtrl

ActiveX Compatility

VB 4.0 (32-bit) and 5.0, Access 95, Access 97

ActiveX Built With

Microsoft Visual C++ v4

ActiveX - Required DLLs

MFC40.DLL (October 6th, 1995 or later)

OLEPRO32.DLL  (October 6th, 1995 or later)

MSVCRT40.DLL  (September 29th, 1995 or later)

VBX Object Type

MabryAlarm

VBX Compatibility

VB 2.0, 3.0 and 4.0 (16-bit)

VBX Built With

Microsoft Visual C++ v1.5

Distribution Note    When you develop and distribute an application that uses this control, you should install the control file into the user's Windows SYSTEM directory.  The control file has version information built into it.  So, during installation, you should ensure that you are not overwriting a newer version.


Alarm Properties

Properties that have special meaning for this control or that only apply to this control are marked with an asterisk (*).

About Property

*AlarmTime Property

Align Property

*DateFormat Property

Enabled Property

Left Property

Name Property

Tag Property

Top Property

*Version Property


Alarm Events

Events that have special meaning for this control or that only apply to this control are marked with an asterisk (*).

*Alarm Event

*NewDate Event


Alarm Methods

Methods that have special meaning for this control or that only apply to this control are marked with an asterisk (*).

*Clear Method


Registration Information

CREDITS

Alarm was written by James Shields.

CONTACT INFORMATION

Orders, inquiries, technical support, questions, comments, etc. can be sent to mabry@mabry.com on the Internet.  Our mailing address/contact information is:

Mabry Software, Inc.

Post Office Box 31926

Seattle, WA  98103-1926

Sales: 1-800-99-MABRY (U.S. Only)

Voice: 206-634-1443

Fax: 206-632-0272 or 206-364-3196

Web: http://www.mabry.com

COST

The price of Alarm (control only) is US$15 (US$20 for International orders).  The cost of Alarm and the C/C++ source code (of the control itself) is US$30 (US$35 for International orders).

Prices are subject to change without notice.

DELIVERY METHODS

We can ship this software to you via air mail and/or e-mail.

Air Mail - you will receive disks, a printed manual, and printed receipt if you choose this delivery method.  The costs are:

US$5.00 	US Priority Mail

US$10.00 	AirBorne Express 2nd Day (US deliveries only)

US$15.00 	AirBorne Express Overnight (US deliveries only)

US$45.00 	International AirBorne Express.

E-Mail - We can ship this package to you via e-mail.  You need to have an e-mail account that can accept large file attachments (which includes CompuServe, AOL, and most Internet providers).  If you choose this option, please note: a printed manual is not included.  We will, however, e-mail a receipt to you.

Be sure to include your full mailing address with your order.  Sometimes (on the Internet) the package cannot be e-mailed, so we are forced to send it through the normal mails.

CompuServe E-Mail - CompuServe members can use the software registration forum (GO SWREG) to register this package.  Alarm's SWREG ID number is 1475.  The source code version's ID number is 1476.  PLEASE NOTE: When you order through SWREG, we send the registered package to your CompuServe account (not your Internet or AOL account) within a few hours.

ORDER / PAYMENT METHODS

You can order this software by phone, fax, e-mail, mail.  For your convenience, an order form has been provided that you can print out directly from this help file.

Please note that orders must include all information that is requested on our order form.   Your shipment WILL BE DELAYED if we have to contact you for additional information (such as phone number, street address, etc.).

You can pay by credit card (VISA, MasterCard, American Express), check (U.S. dollars drawn on a U.S. bank), cash, International Money Order, International Postal Order, Purchase Order (established business entities only - terms net 30), or wire transfer.

WIRE TRANSFER INFORMATION

Here is the information you need regarding our account for a wire funds transfer:

Bank Name: 	SeaFirst - Stone Way Branch

Bank Address: 	3601 Stone Way North

Seattle, WA  98103

Bank Phone: 	206-585-4951

Account Name: 	Mabry Software, Inc.

Routing Number: 	12000024

Account Number: 	16311706

If you are paying with a wire transfer of funds, please add US$12.50 to your order.  This is the fee that SeaFirst Bank charges Mabry Software.  Also, please ADD ANY ADDITIONAL FEES THAT YOUR BANK MAY CHARGE for wire transfer service. If you are paying with a  wire transfer, we must have full payment deposited to our account before we can ship your order.

Copyright © 1993-1997 by Mabry Software, Inc.


Order Form
 Alarm Order Form

Use the Print Topic... command from the File menu to print this order form.

Mail this 	Mabry Software, Inc.

form to: 	Post Office Box 31926

Seattle, WA  98103-1926

Phone: 206-634-1443

Fax: 206-632-0272 or 206-364-3196

Internet: mabry@mabry.com

Web: www.mabry.com

Where did you get this copy of Alarm?

____________________________________________________________________

Name: 	____________________________________________________________________

Ship to: 	____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

____________________________________________________________________

Phone: 	_________________________________________________________________

Fax: 	_________________________________________________________________

E-Mail: 	_________________________________________________________________

MC/VISA/AMEX: _________________________________________ exp. __________________

P.O. # (if any): 	____________________ Signature ____________________________________

qty ordered 	____ 	REGISTRATION
$15.00 ($20.00 international).  Check or money order in U.S. currency drawn on a U.S. bank.  Add $5.00 per order for shipping and handling.

qty ordered 	____ 	SOURCE CODE AND REGISTRATION
$30.00 ($35.00 international).  Check or money order in U.S. currency drawn on a U.S. bank.  Add $5.00 per order for shipping and handling.


Alarm Example

In this example, the program shows how to make a simple digital clock that beeps every quarter hour.  It beeps twice on the half hour, once each at 15 minutes and 45 minutes past the hour, and once for every hour on the hour (i.e., 9 times at 9pm, 11 times at 11am, etc.). To try this example, paste the code into the Declarations section of a form that contains two labels, and an Alarm control.  Press F5.

Dim nAlarms As Integer

Sub Alarm_Add( T As String )
    Alarm1.AlarmTime( nAlarms ) = T
    nAlarms = nAlarms + 1
End Sub

Sub Form_Load ()
    Dim I As Integer
    Dim J As Integer
    Dim T As String

    Label1.Caption = Time$
    Label2.Caption = Date$

    Alarm1.DateFormat = "mm-dd-yyyy"

    nAlarms = 0
    ' alarm 0 is to update the time
    Alarm_Add( "??:??:??" )

    ' Quarter-hour chimes
    Alarm_Add( "??:30:00" )
    Alarm_Add( "??:30:01" )

    ' Half-hour chimes
    Alarm_Add( "??:15:00" )
    Alarm_Add( "??:45:00" )

    ' Fill in alarms for the day
    For I = 0 To 23
        For J = 0 To ((I + 11) Mod 12) + 1
            T = Format$( I, "00" ) & ":00:"
            T = T & Format$( J, "00" )
            Alarm_Add( T )
        Next J
    Next I
End Sub

Sub Alarm1_Alarm (AlarmIndex As Long, TimeNow As String)
    ' update the time caption
    Label1.Caption = TimeNow

    ' when it's not just a time update alarm, beep
    If AlarmIndex <> 0 Then         Beep
    End IfEnd Sub

Sub Alarm1_NewDate (DateNow As String)
    ' update the date caption
    Label2.Caption = DateNow
End Sub


Alarm Event See Also
See Also

AlarmTime Property

Clear Method


AlarmTime Property See Also
See Also

Alarm Event


Clear Method See Also
See Also

Alarm Event

AlarmTime Property


DateFormat Property See Also
See Also

NewDate Event


NewDate Event See Also
See Also

DateFormat Property


Alarm Event

See Also            Alarm Example

Description

Occurs when it's time for an alarm to fire.

Syntax

Sub object_Alarm([index As Integer])

The syntax of the Alarm event has these parts:

Part	   	Description

object	An Alarm control.

index	An integer that identifies a control if it's in a control array.

Remarks

This event only occurs if the Enabled property is set to True (default).

The argument AlarmIndex holds the array index given to the Alarm for this time. This index is the one used for the AlarmTime property.

The argument TimeNow tells what time it actually was when the event fired. When the system is busy, the event may occur after the desired alarm time.


AlarmTime Property

See Also            Alarm Example

Description

Determines the time(s) that the Alarm event is fired.

Syntax

object.AlarmTime( AlarmIndex ) [= time ]

The syntax of the AlarmTime property has these parts:

Part	   	Description

object	An Alarm control.

AlarmIndex	An integer that identifies the alarm being set/reset.

time	A string expression that holds either the new time for the alarm specified by AlarmTime or an empty string (which will clear this alarm).

Remarks

Setting this property sets an alarm. AlarmIndex determines the identifier of the alarm, which is passed to the Alarm event. If this property is set to a blank string, the alarm identified by AlarmIndex is canceled.

The time specified must be in this format: MM:MM:SS Where HH, MM, and SS are either digits or question marks '?'. The colons are required. Question marks act as wildcards.

The Alarm control checks the time every second. If the time string set in the various alarms matches the current time (including any wildcards used), the Alarm event is fired.

This property is only available at run-time.

Data Type

String


Clear Method

See Also            Alarm Example

Description

Clears all alarms from control.

Syntax

object.Clear

The syntax of the Clear method has these parts:

Part	   	Description

object	Required. An Alarm control.

Remarks

This method clears all of the alarms from the control. After executing this method, no alarms will fire until you add more alarms using the AlarmTime property.


DateFormat Property

See Also            Alarm Example

Description

Determines the format of the date passed by the NewDate event.

Syntax

object.DateFormat [= date ]

The syntax of the DateFormat property has these parts:

Part	   	Description

object	An Alarm control.

date	A string expression that holds the desired date format.

Remarks

Setting this property determines the format of the date sent with the NewDate event. This can be used to override the international settings found in WIN.INI. Using this property, you can ensure that you always get a date formatted in a specific fashion. If you leave it to the format found in WIN.INI, you'll have to figure out what format (i.e., MM/DD/YY, DD/MM/YY, or YY/MM/DD) it is.

This string can consist of punctuation and symbols. The symbols are:

Symbol	   	Meaning

d	Day of the month: 1 - 31

dd	Day of the month: 01-31

m	Month of the year: 1 - 12

mm	Month of the year: 01-12

yy	Year: 00-99

yyyy	Year: 1970-2099

More information about this format can be found in the Windows Resource Kit under [intl] Section, and in the VB Programmer's Guide under Format$.

Data Type

String


NewDate Event

See Also            Alarm Example

Description

Occurs when the date changes.

Syntax

Sub object_NewDate([index As Integer,] DateNow As String)

The syntax of the NewDate event has these parts:

Part	   	Description

object	An Alarm control.

index	An integer that identifies a control if it's in a control array.

DateNow	A string expression that holds the current (new) date.

Remarks

This event only occurs if the Enabled property is set to True (default).

The argument DateNow holds the new date. This is formatted using the International date format setup by the control panel. This can be overridden using the DateFormat property.

Alarm uses the sShortDate entry found in the [INTL] section of WIN.INI. This format can vary widely depending on what the user prefers. Use of the DateFormat property is highly recommended.


Version Property

Description

Shows the version of the control.

Syntax

object.Version

The syntax of the Version property has these parts:

Part	   	Description

object	An Alarm control.

Remarks

This property holds the current version of the control. It is read-only and available at both design-time and run-time.

Data Type

String


Getting Custom Controls Written

If you or your organization would like to have custom controls written, you can contact us at the following:

Mabry Software, Inc.

Post Office Box 31926

Seattle, WA  98103-1926

Phone: 206-634-1443

Fax: 206-632-0272 or 206-364-3196

Internet: mabry@mabry.com

You can also contact Zane Thomas.  He can be reached at:

Zane Thomas

Post Office Box 121

Indianola, WA  98342

Internet: zane@mabry.com


Licensing Information

Legalese Version

Mabry Software grants a license to use the enclosed software to the original purchaser.  Copies may be made for back-up purposes only.  Copies made for any other purpose are expressly prohibited, and adherence to this requirement is the sole responsibility of the purchaser.

Customer written executable applications containing embedded Mabry products may be freely distributed, without royalty payments to Mabry Software, provided that such distributed Mabry product is bound into these applications in such a way so as to prohibit separate use in design mode, and that such Mabry product is distributed only in conjunction with the customers own software product.  The Mabry Software product may not be distributed by itself in any form.

Neither source code for Mabry Software products nor modified source code for Mabry Software products may be distributed under any circumstances, nor may you distribute .OBJ, .LIB, etc. files that contain our routines. This control may be used as a constituent control only if the compound control thus created is distributed with and as an integral part of an application.  Permission to use this control as a constituent control does not grant a right to distribute the license (LIC) file or any other file other than the control executable itself. This license may be transferred to a third party only if all existing copies of the software and its documentation are also transferred.

This product is licensed for use by only one developer at a time.  Mabry Software expressly prohibits installing this product on more than one computer if there is any chance that both copies will be used simultaneously.  This restriction also extends to installation on a network server, if more than one workstation will be accessing the product.  All developers working on a project which includes a Mabry Software product, even though not working directly with the Mabry product, are required to purchase a license for that Mabry product.

This software is provided as is.  Mabry Software makes no warranty, expressed or implied, with regard to the software.  All implied warranties, including the warranties of merchantability and fitness for a particular use, are hereby excluded.

MABRY SOFTWARE'S LIABILITY IS LIMITED TO THE PURCHASE PRICE.  Under no circumstances shall Mabry Software or the authors of this product be liable for any incidental or consequential damages, nor for any damages in excess of the original purchase price.

To be eligible for free technical support by telephone, the Internet, CompuServe, etc. and to ensure that you are notified of any future updates, please complete the enclosed registration card and return it to Mabry Software.

English Version

We require that you purchase one copy of a control per developer on a project.  If this is met, you may distribute the control with your application royalty free.  You may never distribute the LIC file.  You may not change the product in any way that removes or changes the requirement of a license file.

We encourage the use of our controls as constituent controls when the compound controls you create are an integral part of your application.  But we don't allow distribution of our controls as constituents of other controls when the compound control is not part of an application.  The reason we need to have this restriction is that without it someone might decide to use our control as a constituent, add some trivial (or even non-trivial) enhancements and then sell the compound control.  Obviously there would be little difference between that and just plain reselling our control.

If you have purchased the source code, you may not re-distribute the source code either (nor may you copy it into your own project).  Mabry Software retains the copyright to the source code.

Your license is transferable.  The original purchaser of the product must make the transfer request.  Contact us for further information.

The sample versions of our products are intended for evaluation purposes only.  You may not use the sample version to develop completed applications.